perm filename EMACLS.16[MAC,LSP] blob
sn#635650 filedate 1982-01-06 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00026 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 MacLisp portion of the E/MacLisp Interface.
C00024 00003 E Manipulation Routines
C00030 00004 Routines to queue up mail
C00032 00005 αxSLISP dsk:maclsp.dmp[1,3](elisp.ini)
C00041 00006 Mail Interface
C00045 00007 Mail Type
C00050 00008 Wait Mail
C00053 00009 Mask Routines
C00055 00010 Mail SFA
C00059 00011 Tyi
C00062 00012 Tyo
C00064 00013 Force Output
C00068 00014 Message Align
C00070 00015 Mail Refresh
C00075 00016 Transfer Buffer
C00081 00017 Clear Input
C00082 00018 Wait OK
C00085 00019 Send Simple Message
C00089 00020 Em:init
C00093 00021 Send OK
C00094 00022 Em:eval-protect
C00095 00023 Mail queue
C00098 00024 Readonly Variables
C00104 00025 Random debugging stuff
C00107 00026 Storage for Mail routines
C00111 ENDMK
C⊗;
;;; MacLisp portion of the E/MacLisp Interface.
;;;
;;; An SFA/MAIL based system for communicating with
;;; an unstructured, standard text editor.
;;; Starts with si:ejobnum figured out from E.
;;; (sfa-call <sfa> 'send-lines n)
;;; sets the number of lines that are sent at one time to n.
;;; normal is T (meaning send every line).
;;; NIL means never send.
;;; (sfa-call <sfa> 'report-send-lines) returns the value
;;; si:ecalledp, the global variable, tells whether E called you
;;; History
(declare (mapex t)
; (setq defmacro-for-compiling ())
(special -em:ecommands- -em:sfa- -em:errorp-
-em:oldtyi- -em:oldtyo- -em:mode- -em:silence-
-em:mail-input-buffer-dry-handler- -em:queue- -em:lqueue-
-em:herald- -em:cmchar-table- -em:si:ecalledp- si:ejobnum
si:sail-mail-service
-em:filemode- -em:linel-)
(*expr em:get-next-readonly em:force-readonly-message em:make-sixbit
em:readonly-init em:warn em:message-align em:send-simple-message
em:mail-sfa em:init-send-lines em:init em:get-jobnum em:set-jobnum
em:turn-mask-off em:business-address em:mail-interrupt-handler
em:mask-on em:eval-protect em:mask-off)
(*lexpr em:fread %match)
(fixnum si:ejobnum))
(setq -em:ecommands- ()
-em:mail-input-buffer-dry-handler- ()
-em:mode- 'LTYPE
-em:si:ecalledp- ()
-em:oldtyi- tyi -em:oldtyo- tyo
-em:filemode- ()
-em:cmchar-table- ()
-em:herald- '|MacLisp Ready|
-em:silence- ()
-em:linel- (linel t))
(defun em:mail-interface-initialize ()
(em:turn-mask-off)
(setq -em:queue- ())
(setq -em:lqueue- ())
(em:initialize)
(setq -em:si:ecalledp- t)
(and -em:herald-
(progn (princ -em:herald-)(terpri)))
(sfa-call -em:sfa- 'force-output ())
(setq si:sail-mail-service 'em:mail-interrupt-handler)
)
(setq -em:sfa- ())
(sstatus ttyint 200. '+internal-↑b-break)
(sstatus ttyint 232. '+internal-↑b-break)
(sstatus ttyint 206. 'em:reset&↑b-break)
(sstatus ttyint 238. 'em:reset&↑b-break)
(defun em:reset&↑b-break (()())
(em:reset)
(+internal-↑b-break () ()))
(defun em:initialize ()
(em:get-jobnum)
(em:init)
(em:init-send-lines)
(setq -em:sfa- (sfa-create (function em:mail-sfa) 0 'mail-sfa))
(setq tyi -em:sfa-)
(setq tyo -em:sfa-)
(setq msgfiles `(,-em:sfa-))
(sfa-store -em:sfa- 'xcons -em:sfa-)
(em:send-simple-message 'ok)
)
(defun em:connect (n)
(em:set-jobnum n)
(em:init)
(em:init-send-lines)
(setq -em:sfa- (sfa-create (function em:mail-sfa) 0 'mail-sfa))
(setq tyi -em:sfa-)
(setq tyo -em:sfa-)
(setq msgfiles `(,-em:sfa-))
(sfa-store -em:sfa- 'xcons -em:sfa-)
(em:send-simple-message 'ok)
)
(defmacro unascii (x)
`(car (exploden ,x)))
(defun em:ecommands (l)
(sfa-call -em:sfa- 'force-output ())
(let ((-em:ecommands- t))
(do ((com l (cdr com)))
((null com)(sfa-call -em:sfa- 'force-output ()))
(cond ((eq (car com) '<cr>)
(sfa-call -em:sfa- 'tyo #o26)
(sfa-call -em:sfa- 'tyo #o27))
((eq (car com) '<lf>)
(sfa-call -em:sfa- 'tyo #o26)
(sfa-call -em:sfa- 'tyo #o1))
((eq (car com) '<sp>)
(sfa-call -em:sfa- 'tyo '32.))
((eq (car com) '<bs>)
(sfa-call -em:sfa- 'tyo #o26)
(sfa-call -em:sfa- 'tyo #o102))
((eq (car com) '<tab>)
(sfa-call -em:sfa- 'tyo #o26)
(sfa-call -em:sfa- 'tyo #o75))
((eq (car com) '<⊗>)
(sfa-call -em:sfa- 'tyo #o26)
(sfa-call -em:sfa- 'tyo #o26))
((eq (car com) '<alt>)
(sfa-call -em:sfa- 'tyo #o26)
(sfa-call -em:sfa- 'tyo #o33))
(t
(sfa-call -em:sfa- 'tyo
(unascii (car com))))))))
;;; Like above, but takes ascii codes
(defun em:raw-ecommands (l)
(sfa-call -em:sfa- 'force-output ())
(let ((-em:ecommands- t))
(do ((com l (cdr com)))
((null com)(sfa-call -em:sfa- 'force-output ()))
(cond ((= (car com) #o11)
(sfa-call -em:sfa- 'tyo #o26)
(sfa-call -em:sfa- 'tyo #o75))
((= (car com) #o175)
(sfa-call -em:sfa- 'tyo #o26)
(sfa-call -em:sfa- 'tyo #o33))
(t
(sfa-call -em:sfa- 'tyo
(cond ((= (car com) #o15) #o26)
((= (car com) #o12) #o27)
(t (car com)))))))))
(defun em:set-send-lines (n)
(sfa-call -em:sfa- 'send-lines n))
(defun em:get-send-lines ()
(sfa-call -em:sfa- 'report-send-lines ()))
(defun em:force ()
(sfa-call -em:sfa- 'force-output ()))
;(setq read-eval-print-* 'em:terpri)
(defun em:terpri () (terpri -em:sfa-))
(defun em:real-terpri () (tyo #o40 -em:sfa-)(terpri -em:sfa-))
(defun em:eval-message ()
((lambda (eof)
(em:message-align)(em:set-send-lines t)
(do ((form (em:fread eof) (em:fread eof))
(l nil))
((eq form eof)
(do ((i (nreverse l) (cdr i)))
((null i)
(sfa-call -em:sfa- 'force-output ())
(em:set-send-lines ()))
(print (car i))))
(setq l (cons (eval form) l)))) (ncons ())))
(defun em:eval-message-warn ()
((lambda (eof)
(em:message-align)(em:set-send-lines t)
(do ((form (em:fread eof) (em:fread eof))
(l nil))
((eq form eof)
(em:warn '|Done!|)
(do ((i (nreverse l) (cdr i)))
((null i)
(sfa-call -em:sfa- 'force-output ())
(em:set-send-lines ()))
(print (car i))))
(setq l (cons (eval form) l)))) (ncons ())))
(defmacro em:read-until-eof (form return . forms)
`((lambda (eof)
(em:message-align)
(do ((,form (em:fread eof) (em:fread eof)))
((eq ,form eof) ,return)
. ,forms)) (ncons ())))
(defmacro em:tyi-until-eof (form return . forms)
`((lambda (-em:filemode-)
(em:message-align)
(do ((,form (tyi -em:sfa- -1) (tyi -em:sfa- -1)))
((= ,form -1) ,return)
. ,forms)) t))
(defun em:tyi-message ()
(let ((ans ()))
(em:tyi-until-eof form (nreverse ans)
(push form ans))))
;;;; Conditions a message by finding the end of the current message or
;;;; a non <cr>,<lf>
;
;(defun em:condition-message ()
; (do ((i (tyi -em:sfa- -1)(tyi -em:sfa- -1)))
; ((or (= i -1)
; (not (member i '(#o15 #o12))))
; (cond ((not (= i -1))
; (untyi i -em:sfa-))))))
(defun em:tyi-line ()
(let ((ans ()))
(em:ecommands '(α =))
(em:tyi-until-eof form (nreverse ans)
(push form ans))))
(defun em:fread n
((lambda (-em:filemode-)
(cond ((zerop n)
(read))
((= n 1)
(read (arg 1)))
((= n 2)
(read (arg 1)(arg 2)))
(t
(break |too many args to FREAD| t))))
t))
(defun em:control-dispatch (char)
(cond ((member char '(#o302 #o342))
(funcall '+internal-↑B-break -em:sfa- char))
((member char '(#o307 #o347))
(em:init)
(↑G))
((member char '(#o303 #o343))
(setq ↑D ()))
((member char '(#o304 #o344))
(setq ↑D t))
((member char '(#o322 #o362))
(em:init)(↑G))
((member char '(#o316 #o356))
(em:reset)(+internal-↑B-break ()()))
(t ((lambda (fun)
(cond (fun (funcall fun -em:sfa- char))
((setq fun (cdr (assoc char
-em:cmchar-table-)))
(funcall fun char) char)
(t (↑g)))) ;foo we are SUNK!!!!!
(status ttyint char)))))
(defun em:readonly-vars (l)
;make up message and initial (sixbit . ascii) alist
(em:readonly-init)
(cond ((> (length l) 25.)
(do ((rest l (cdr rest))
(i 25. (1- i))
(first25 ()))
((= i 0)
(append
(em:readonly-vars first25)
(em:readonly-vars rest)))
(push (car l) first25)))
(t
(setq l
(mapcar #'(lambda (x)
(subst () ()
`(,(em:make-sixbit x)
,x () ())))
l))
(em:force-readonly-message)
(do ((nxt (em:get-next-readonly)
(em:get-next-readonly))
(entry))
((equal nxt -1)
(mapcan #'(lambda (x)
(cond
((caddr x)
`((,(cadr x) . ,(cadddr x))))))
l))
(cond ((setq entry (assoc (car nxt) l))
(rplaca (cdddr entry) (cdr nxt))
(rplaca (cddr entry) t)))))))
(declare (special em:line em:lines em:page em:pages))
(defun em:send-next-line ()
(let ((-em:mail-input-buffer-dry-handler- ()))
(cond ((= em:lines em:line)
(cond ((= em:page em:pages)
(break |No right paren found| t))
(t (em:ecommands
'(α p))
(setq em:line 1
em:page (1+ em:page)
em:lines
(cdr (assq 'lines
(em:readonly-vars '(lines)))))
(em:ecommands '(α =)))))
(t (em:ecommands '(⊗ ↔ α =))
(setq em:line (1+ em:line))))))
(defun em:send-this-line ()
(let ((-em:mail-input-buffer-dry-handler- ()))
(cond ((< em:lines em:line)
(cond ((= em:page em:pages)
(break |No right paren found| t))
(t (em:ecommands
'(α p))
(setq em:line 1
em:page (1+ em:page)
em:lines
(cdr (assq 'lines
(em:readonly-vars '(lines)))))
(em:ecommands '(α =)))))
(t (em:ecommands '(α = ⊗ ↔))
(setq em:line (1+ em:line))))))
;;; SEXP on next line
(defun em:eval-next-sexp ()
(em:ecommands '(α β - α β V))
(em:eval-next-sexp1)
(em:ecommands '(α β V)))
(defun em:eval-next-sexp1 ()
(let ((alist (em:readonly-vars '(line lines page pages))))
(setq em:line (cdr (assq 'line alist))
em:lines (cdr (assq 'lines alist))
em:page (cdr (assq 'page alist))
em:pages (cdr (assq 'pages alist))))
(let ((-em:mail-input-buffer-dry-handler- 'em:send-next-line))
(print (eval (read)))))
;;; SEXP on this line
(defun em:eval-this-sexp ()
(em:ecommands '(α β - α β V))
(em:eval-this-sexp1)
(em:ecommands '(α β V)))
(defun em:eval-this-sexp1 ()
(let ((alist (em:readonly-vars '(line lines page pages))))
(setq em:line (cdr (assq 'line alist))
em:lines (cdr (assq 'lines alist))
em:page (cdr (assq 'page alist))
em:pages (cdr (assq 'pages alist))))
(cond ((< em:lines em:line)(setq em:line (1- em:line))
(em:ecommands '(⊗ ↑))))
(let ((-em:mail-input-buffer-dry-handler- 'em:send-this-line))
(print (eval (read)))))
(defun em:add-cmfun (char fun)
(push `(,char . ,fun) -em:cmchar-table-))
(defun em:delete-cmfun (char)
(setq -em:cmchar-table-
(mapcan
#'(lambda (x)
(cond ((= char (car x)) ())
(t (ncons x))))
-em:cmchar-table-)))
(defun em:ttyint (l)
(let ((entry (assoc (car l) -em:cmchar-table-)))
(cond ((cadr l)
(cond (entry (rplacd entry (cadr l))
(cadr l))
(t (em:add-cmfun (car l)(cadr l)))))
(t (cdr entry)))))
(defun em:transcript-read n
((lambda (form)
(print form)
form)
(apply 'read (listify n))))
(defun em:transcript-off (() ()) (em:transcript ()))
(defun em:transcript (flag)
(cond (flag (setq read 'em:transcript-read)
(em:ecommands '(α X L F I L E ⊗ ↔ α X E V A L ⊗ ↔ ))
(setq -em:mode- 'LFILE)
(em:swallow-alt)
'TRANSCRIPT)
(t (em:ecommands '(α X l t y p e ⊗ ↔))
(setq -em:mode- 'LTYPE)
(setq read ()))))
(defun em:swallow-alt ()
(do ((i (tyi)(tyi)))
((= i #o175) t)))
(defun em:mode (mode) (setq -em:mode- mode))
(defun em:lfile-mode () (setq -em:mode- 'lfile)
(em:ecommands
'(α X L F I L E ⊗ ↔ α X S A Y | | L F I L E | | /m /o /d /e ⊗ ↔))
(setq -em:silence- t))
(defun em:ltype-mode () (setq -em:mode- 'ltype)
(em:ecommands
'(α X L T Y P E ⊗ ↔ α X S A Y | | L T Y P E | | /m /o /d /e ⊗ ↔))
(setq -em:silence- t))
(defun em:lattach-mode () (setq -em:mode- 'lattach)
(em:ecommands
'(α X L A T T A C H ⊗ ↔ α X S A Y | | L A T T A C H | | /m /o /d /e ⊗ ↔))
(setq -em:silence- t))
(defun em:lpend-mode () (setq -em:mode- 'lfile)
(em:ecommands
'(α X L P E N D ⊗ ↔ α X S A Y | | L P E N D | | /m /o /d /e ⊗ ↔))
(setq -em:silence- t))
(defun em:readonly-var (var)
(cdr (assq var (em:readonly-vars `(,var)))))
(defun em:reset ()
(setq -em:sfa- ())
(setq tyi -em:oldtyi-)
(setq tyo -em:oldtyo-)
(setq msgfiles ())
(setq si:ecalledp ()))
;(defun em:suspend n
; (em:reset)
; (gc)
; (cond ((= n 0)(suspend))
; ((= n 1)(suspend (arg 1)))
; (t (suspend (arg 1)(arg 2)))))
;;; E Manipulation Routines
;;; These are to help the user edit his MacLisp file.
;;; This routine sends the current sexp no matter where you
;;; are as long as you are `inside' of it
(defun em:send-this-defun ()
(em:ecommands '(α β - α β V))
(em:find-defun-backwards);find the previous defun, defmacro...
(em:eval-this-sexp1) ;evaluate it
(em:ecommands '(α β V)))
(defun em:find-defun-backwards ()
(let ((alist (em:readonly-vars '(line lines page pages))))
(setq em:line (cdr (assq 'line alist))
em:lines (cdr (assq 'lines alist))
em:page (cdr (assq 'page alist))
em:pages (cdr (assq 'pages alist)))
(cond ((< em:lines em:line)(setq em:line (1- em:line))
(em:ecommands '(⊗ ↑))))
(*catch 'em:find-defun-backwards
(do ((em:page em:page (1- em:page)))
((< em:page 1) (break |Defun not found| t))
(do ((em:line em:line (1- em:line)))
((< em:line 1))
(em:ecommands '(α =))
(cond ((em:defun-on-this-linep (em:tyi-message))
(*throw 'em:find-defun-backwards t)))
(em:ecommands '(⊗ b)))
(em:ecommands '(α - α p α ∞ ⊗ ↔ ⊗ b))
(setq em:lines (cdr (assq 'lines (em:readonly-vars '(lines)))))
(setq em:line em:lines)))))
;;; For now it looks for:
;;; (defun
;;; (defmacro
;;; (macro
;;; (match-macro
;;; (macrodef
(defun em:defun-on-this-linep (text)
(or
(%match '(* #o50 ($ir * em:spacep)
($r ? em:dp)
($r ? em:ep)
($r ? em:fp)
($r ? em:up)
($r ? em:np) ($r ? em:spacep) *) text)
(%match '(* #o50 ($ir * em:spacep)
($r ? em:dp)
($r ? em:ep)
($r ? em:fp)
($r ? em:mp)
($r ? em:ap)
($r ? em:cp)
($r ? em:rp)
($r ? em:op) ($r ? em:spacep) *) text)
(%match '(* #o50 ($ir * em:spacep)
($r ? em:mp)
($r ? em:ap)
($r ? em:tp)
($r ? em:cp)
($r ? em:hp)
($r ? em:-p)
($r ? em:mp)
($r ? em:ap)
($r ? em:cp)
($r ? em:rp)
($r ? em:op) ($r ? em:spacep) *) text)
(%match '(* #o50 ($ir * em:spacep)
($r ? em:mp)
($r ? em:ap)
($r ? em:cp)
($r ? em:rp)
($r ? em:op)
($r ? em:dp)
($r ? em:ep)
($r ? em:fp) ($r ? em:spacep) *) text)
(%match '(* #o50 ($ir * em:spacep)
($r ? em:mp)
($r ? em:ap)
($r ? em:cp)
($r ? em:rp)
($r ? em:op) ($r ? em:spacep) *) text)))
(defun em:spacep (n) (or (= n #o40)
(= n #o11)))
(defun em:dp (n) (or (= n #o104)
(= n #o144)))
(defun em:ep (n) (or (= n #o105)
(= n #o145)))
(defun em:fp (n) (or (= n #o106)
(= n #o146)))
(defun em:up (n) (or (= n #o125)
(= n #o165)))
(defun em:np (n) (or (= n #o116)
(= n #o156)))
(defun em:mp (n) (or (= n #o115)
(= n #o155)))
(defun em:ap (n) (or (= n #o101)
(= n #o141)))
(defun em:cp (n) (or (= n #o103)
(= n #o143)))
(defun em:rp (n) (or (= n #o122)
(= n #o162)))
(defun em:op (n) (or (= n #o117)
(= n #o157)))
(defun em:tp (n) (or (= n #o124)
(= n #o164)))
(defun em:hp (n) (or (= n #o110)
(= n #o150)))
(defun em:-p (n) (= n #o55))
;;; Routines to queue up mail
;;; The queue is an ALIST of array, business address pairs
(defun em:add-queue ()
(let ((ar (*array () 'fixnum 32.)))
(setq -em:queue-
(nconc -em:queue- `(,ar )))
(em:business-address (maknum ar))))
(defun em:get-queue ()
(cond (-em:queue-
(prog2 ()
(em:business-address
(maknum (car -em:queue-)))
(setq -em:queue- (cdr -em:queue-))))))
(defun em:get-lqueue ()
(cond (-em:lqueue-
(prog2 ()
(em:business-address
(maknum (car -em:lqueue-)))
(setq -em:lqueue- (cdr -em:lqueue-))))))
(defun em:add-lqueue (n)
(let ((ar (*array () 'fixnum (+ 1 n))))
(setq -em:lqueue-
(nconc -em:lqueue- `(,ar )))
(em:business-address (maknum ar))))
(defun em:remove-tail ()
(cond (-em:queue-
(cond ((cdr -em:queue-)
(do ((l -em:queue- (cdr l))
(x (cdr -em:queue-) (cdr x)))
((null x)
(rplacd l ()))))
(t (setq -em:queue- ()))))))
;;; αxSLISP dsk:maclsp.dmp[1,3](elisp.ini)
;;; αnαxSLISP talks to job n(10.)
;;; α0αxSLISP types the wholine of inferior
;;; α-αxSLISP murder (i.e. negotiated suicide)
;;; α= send arrow line or attach buffer
;;; α+nα= send next n lines
;;; α-nα= send previous n lines
;;; αx= <sexp>
;;; send comand line
;;;
;;; Protocols: (* means not actually anticipated to be used; current
;;; implementation knows about it but does not send and/or interpret them
;;; specially)
;;;
;;; From E to MacLisp
;;; Mail
;;; wd0: Job# sending message
;;; wd1: type of message
;;;
;;; 2,,0: Continuation needed
;;; 1,,0: Short (fits in the next =30 words, ends with null byte
;;; or falls off)
;;;
;;; 0 no-op
;;; 1 initiating a conversation
;;; 2 ok (did the jobread)
;;; 3 SEXPs
;;; 4 explicit eof
;;; 5 control (meta) chars to follow (E macro format)
;;; (or E commands (from MacLisp to E))
;;; 6 interrupt. do <esc>i <char>
;;; 7 close connection (suicide)
;;; 8 readonly variables
;;;
;;; wd2: -number of bytes,,address of buffer
;;;
;;;
;;; E commands will be represented in the standard E macro manner
;;; (unless there is something better).
;;;
;;;
;;; Protocol is:
;;; E MacLisp
;;; ---------------
;;; initiate
;;; ok
;;;
;;; To send a short message just a MAIL
;;; To send a long message MAIL then wait for JOBREAD acknowledge
;;; To send interrupts, just send them
;;; Acknowledgment is the short OK message
;;;
;;; Commands needed:
;;; start DMP file
;;; send control chars
;;; send interrupt character (just 1 at a time)
;;;
;;; Mail Interface
(lap em:MAIL-interface subr)
(defsym rovmailblksize 50.)
(defsym mlblksize 32.)
(defsym freeac #o13)
(defsym cntrl-bit #o200)
(defsym meta-bit #o400)
(defsym ccntrlg #o307)
(defsym cntrlg #o347)
(defsym ccntrlx #o330)
(defsym cntrlx #o370)
(defsym EPR #o456062)
(defsym noutbytes #o12000)
(defsym nrovbytes #o1000)
(defsym rdblk #o2000)
(defsym blksize #o2000)
(defsym maxshort 145.)
(defsym rovmaxshort 29.)
(defsym noop-type 0)
(defsym initiate-type 1)
(defsym ok-type 2)
(defsym sexp-type 3)
(defsym explicit-eof-type 4)
(defsym ecommand-type 5)
(defsym interrupt-type 6)
(defsym kill-type 7)
(defsym readonlyvar-type 8.)
(defsym high-command 8.)
(defsym bs #o177)
(defsym lf #o12)
(defsym cr #o15)
(defsym space #o40)
(defsym tab #o11)
(defsym alpha 2)
(defsym beta 3)
(defsym cont-bit 2)
(defsym short-bit 1)
(defsym meta-mask 400)
(defsym control-mask 200)
;;; Silly jobnum was never set
setjob (movem tt ijobnum)
(movem tt ojobnum)
(movem tt o2jobnum)
(movem tt jobread)
(movem tt ljobread)
(jsp t fxcons) ;number cons
(movem a (special si:ejobnum)) ;save it
(popj p)
true (movei a 't)
(popj p)
false (movei a 'nil)
(popj p)
pfxpfalse
(move tt 1 tt)
(movem tt jobrderr)
(pop fxp tt)
; (pushj p poptt4)
(pushj p send-ok)
(movei a jobrdmess2)
(pushj p sendmess)
(move a jobrderr)
(move a (- jobrderrdispatch 1) a)
(jrst 0 sendmess)
fjobrd
(move tt 1 tt)
(movem tt jobrderr)
(pushj p send-ok)
(movei a jobrdmess1)
(pushj p sendmess)
(move a jobrderr)
(move a (- jobrderrdispatch 1) a)
(jrst 0 sendmess)
(entry em:get-jobnum subr)
(args em:get-jobnum (nil . 0))
(move tt (special si:ejobnum))
(movem tt ijobnum)
(movem tt ojobnum)
(movem tt o2jobnum)
(movem tt jobread)
(movem tt ljobread)
(jsp t fxcons)
(movem a (special si:ejobnum))
(jrst 0 em:get-terminal)
(entry em:set-jobnum subr)
(args em:set-jobnum (nil . 1))
(move tt 0 a)
(movem tt ijobnum)
(movem a (special si:ejobnum))
(movem tt jobread)
(movem tt ljobread)
(movem tt ojobnum)
(movem tt o2jobnum)
(popj p)
wrongj (movei a 'wrong-jobnum)
(popj p)
;;; Mail Type
(entry em:process-mail subr)
em:process-mail
; (setzm 0 tyi-inited)
(entry em:mail-type subr)
(args em:mail-type (nil . 0))
em:mail-type
(setzm 0 explicit-eof) ;0 means nil
(setzm 0 forcedp)
(move tt (+ imailbox 1));type bits
(setzm 0 contp)
(tlne tt cont-bit)
(setom 0 contp)
(hrrzs 0 tt) ;grumble, test for range
(skipge 0 tt) ;too low?
(jrst 0 unknown) ;yup, unknown
(caile tt high-command) ;too high
(jrst 0 unknown)
(jrst 0 @ type-disp tt) ;dispatch
unknown (movei a 'unknown)
(popj p)
type-disp
(0 0 no-op)
(0 0 initiate)
(0 0 ok)
(0 0 sexps)
(0 0 explicit-eof)
(0 0 e-command)
(0 0 interrupt)
(0 0 kill)
(0 0 readonlyvars)
e-command
(movei a 'ecommand)
(popj p)
no-op
(movei a 'no-op)
(popj p)
sexps
(move a (+ imailbox 2)) ;get number of bytes
(move tt (+ imailbox 1)) ;type bits
; (setzm 0 tyi-inited) ;tyi not inited
(hlrem a inbytes) ;store it
(hlre b a) ;-number of bytes
(idivi b 4) ;-number of words
(jumpe c ztesch)
(subi b 1) ;one more, bunkie
ztesch
(movem b inwords)
(move b inpointtem)
(movem b inpoint)
(skipe 0 withinrov)
(setom 0 delayedsexp)
(setom 0 newwrcv) ;newwrcv fix.
(setzm 0 mailinp)
(tlne tt short-bit) ;short?
(jrst 0 tshort)
(pushj p transfer-buffer)
(movei a 'sexps)
(popj p)
tshort (pushj p transfer-short)
(movei a 'sexps)
(popj p)
initiate(movei a 'initiate)
(setzm 0 mailinp)
(popj p)
readonlyvars
(movei tt rovmail)
(movem tt transfer-spot)
(movei tt rovmailblksize)
(movem tt transfer-size)
(move a (+ imailbox 2)) ;number of bytes
(hlrem a rinbytes)
(movem a inwords)
(move a irovpointtem)
(movem a irovpoint)
(setzm 0 mailinp)
(move tt (+ imailbox 1)) ;type bits
(tlne tt short-bit) ;short?
(jrst 0 rtshort)
(pushj p transfer-buffer)
(movei a 'readonlyvars)
(popj p)
rtshort (pushj p transfer-short)
(movei a 'readonlyvars)
(popj p)
interrupt
(move tt (+ imailbox 2))
(tro tt #o200) ;controlify it
(jsp t fxcons)
(jcall 1 'em:control-dispatch)
explicit-eof
(setom 0 explicit-eof)
(movei a 'eof)
(popj p)
ok
(movei a 'ok)
(setzm 0 mailinp)
(popj p)
kill
(calli 1 12) ;kill self
;;; Wait Mail
(entry em:wait-mail subr)
(args em:wait-mail (nil . 0))
em:wait-mail
(setzm 0 tyi-inited)
(skipe 0 tyop)
(pushj p force2)
wm6 (skipn 0 (special -em:queue-))
(jrst 0 wm7)
(movei t wm2)
(jrst 0 wm4)
wm7 (skipe 0 (special -em:mail-input-buffer-dry-handler-))
(pushj p em:call-handler)
wm1
(mail 1 imailbox) ;WRCV
; (setom 0 newwrcv)
wm2 (hlrz tt imailbox) ;get EPR half
(caie tt epr) ;is it EPR (in sixbit)?
(jrst 0 wm6)
(hrrz tt imailbox) ;get the jobnum
(skipg 0 ijobnum)
(pushj p setjob)
(came tt ijobnum) ;correct one?
(jrst 0 wm6)
wm3
(setom 0 mailinp) ;mail now in
(movei a 't)
(popj p)
wm4 (movem freeac (+ svdacs 9.))
(movei freeac svdacs)
(hrli freeac b)
(blt freeac (+ svdacs 9.))
(setz b)
(movei freeac c)
(hrli freeac b)
(blt freeac freeac)
(call 0 'em:get-queue)
(hrlz tt 0 a) ;address of mailbox
(hrri tt imailbox)
(blt tt (+ imailbox (- mlblksize 1))) ;transfer it
(move tt (+ imailbox 1))
(tlne tt short-bit)
(skipa)
(pushj p wm8)
(setom 0 tyi-inited) ;ready to read
(hrlzi freeac svdacs)
(hrri freeac b)
(blt freeac freeac)
(jrst 0 0 t)
;(entry wm8 subr)
wm8 (pushj p zinmail)
(call 0 'em:get-lqueue)
(setom 0 lqp) ;got queued mail already
(move a 0 a)
(move b a)
(aos 0 a)
(hrlz tt a)
(hrri tt inmail)
(movn b 0 b)
(addi b inmail)
(sos 0 b)
(blt tt 0 b) ;transfer it
(popj p)
;;; Validate mail in tt, via jsp t
validate-mail
(push fxp tt)
; (pushj p pushtt1)
(hlrzs 0 tt)
(caie tt epr) ;is it EPR (in sixbit)?
(jrst 0 vm1)
(hrrz tt 0 fxp) ;get the jobnum
(camn tt ijobnum) ;correct one?
(aos 0 t)
vm1
(pop fxp tt)
; (pushj p poptt1)
(jrst 0 0 t)
;;; Mask Routines
(entry em:mask-off subr)
(args em:mask-off (nil . 0))
(aos 0 critical)
(722←33 0 mailint) ;imskcl
(movei a 't)
(popj p)
(entry em:turn-mask-off subr)
(args em:turn-mask-off (nil . 0))
(722←33 0 mailint) ;imskcl
(movei a 't)
(popj p)
(entry em:mask-on subr)
(args em:mask-on (nil . 0))
(sosg 0 critical)
(721←33 0 mailint) ;imskst
(movei a 't)
(popj p)
em:call-handler
(movem freeac (+ svdacs 9.))
(movei freeac svdacs)
(hrli freeac b)
(blt freeac (+ svdacs 9.))
(setz b)
(movei freeac c)
(hrli freeac b)
(blt freeac freeac)
(move a (special -em:mail-input-buffer-dry-handler-))
(callf 0 0 1)
(hrlzi freeac svdacs)
(hrri freeac b)
(blt freeac freeac)
(skipn 0 delayedsexp)
(popj p)
(sub p (% 0 0 1 1))
(jrst 0 wm2)
;;; Mail SFA
(entry em:mail-sfa subr)
(args em:mail-sfa (nil . 3))
(movei a 0 b) ;operation type ignore the object
(caie a 'which-operations)
(jrst 0 t1)
;;; terpri operation flushed
(movei a '(tyi tyo force-output untyi charpos linel ;terpri
force-readonly-message send-lines report-send-lines
ttyint))
(popj p)
t1 (cain a 'tyi) ;tyi?
(jrst 0 em:mail-tyi)
(cain a 'tyo) ;tyo?
(jrst 0 em:mail-tyo)
;;; terpri operation flushed
; (cain a 'terpri)
; (jrst 0 em:terpri)
(cain a 'force-output) ;force output?
(jrst 0 em:mail-force-output)
(cain a 'untyi) ;untyi?
(jrst 0 em:mail-untyi)
(cain a 'charpos)
(jrst 0 em:mail-charpos)
(cain a 'linel)
(jrst 0 em:mail-linel)
(cain a 'send-lines)
(jrst 0 isend-lines)
(cain a 'report-send-lines)
(jrst 0 report-send-lines)
(cain a 'force-readonly-message)
(jrst 0 em:force-readonly-message)
(cain a 'ttyint)
(jrst 0 em:ttyint1)
(movei a 'nil)
(popj p)
(entry em:mail-charpos subr)
(args em:mail-charpos (nil . 0))
em:mail-charpos
(skipn 0 c)
(jrst 0 g2)
(hrrz a c)
(move c 0 a)
(movem c charpos)
(popj p)
g2 (move tt charpos)
(jrst 0 fix1)
em:mail-linel
(skipn 0 c)
(jrst 0 g3)
(hrrz a c)
(movem a (special -em:linel-))
(popj p)
g3 (move a (special -em:linel-))
(popj p)
isend-lines
(movem c send-lines)
(move c @ c)
(movem c skipp)
(movem c vsend-lines)
(movei a 't)
(popj p)
report-send-lines
(move a send-lines)
(popj p)
(entry em:init-send-lines subr)
(args em:init-send-lines (nil . 0))
(movei a noutbytes)
(movem a outbytes)
(movei a nrovbytes)
(movem a rovbytes)
(movei tt 0)
(movem tt vsend-lines)
(movem tt skipp)
(movei a 'NIL)
(movem a send-lines)
(popj p)
em:terpri
(setzm 0 forcedp)
(setom 0 tyop)
(movei a cr)
(pushj p tyo1)
(movei a lf)
(jrst 0 tyo1)
em:ttyint1
(move a c)
(jcall 1 'em:ttyint)
;;; Tyi
(entry em:mail-tyi subr)
em:mail-tyi
(skipe 0 explicit-eof)
(jrst 0 eeof)
(movem c eofchar)
(skipe 0 untyif)
(jrst 0 untyi2)
(skipn 0 tyi-inited) ;not inited?
(pushj p real-mail-refresh)
ityi (skipe 0 inbytes) ;and nothing left?
(jrst 0 tyi1)
(skipe 0 (special -em:filemode-)) ;in special file mode?
(jrst 0 reof)
tyi2 (pushj p mail-refresh)
tyi1 (aosle 0 inbytes)
(pushj p mail-refresh)
inmailok
(setzm 0 newwrcv)
(ildb tt inpoint) ;get byte
(trne tt cntrl-bit)
(jrst 0 pondercntrl)
(jrst 0 fix1) ;what a bum!
em:mail-untyi
(aos 0 untyif)
(move b untyipdl)
(push b c)
(movem b untyipdl)
(popj p)
untyi2 (move b untyipdl)
(sosl 0 untyif)
(pop b a)
(movem b untyipdl)
(popj p)
eeof (setzm 0 explicit-eof)
reof
(move a eofchar)
(sub p (% 0 0 1 1))
(popj p)
pondercntrl
(trnn tt meta-bit) ;foo it was control-meta
(jrst 0 tyi3)
(jrst 0 fix1) ;what a bum!
tyi3 (caie tt ccntrlg) ;↑G
(cain tt cntrlg) ;↑g
(jrst 0 ↑Ghandler)
(caie tt ccntrlx) ;↑X
(cain tt cntrlx) ;↑x
(jrst 0 ↑Xhandler)
(movei tt 0 tt)
(jsp t fxcons)
(call 1 'em:control-dispatch)
(popj p)
↑Xhandler
(movei t em:mail-tyi)
(push p t)
(push p (% 0 0 'quit))
(movni t 1)
(jcall 16 'error)
↑Ghandler
(pushj p em:init)
(call 0 '↑G)
(entry em:messagep subr)
(skipe 0 tyi-inited)
(jrst 0 true)
(skipe 0 (special -em:queue-))
(jrst 0 true)
(mail 3)
(jrst 0 false)
(jrst 0 true)
;;; Tyo
(entry em:mail-tyo subr)
em:mail-tyo
(setzm 0 forcedp)
(setom 0 tyop)
(move a @ c)
(caie a cr)
(cain a lf)
(skipa)
(setom 0 noncrlf) ;means a non crlf char has been sent
tyo1 (pushj p ucharpos) ;update charpos
(idpb a outpoint) ;put it there
(sosg 0 outbytes) ;ready to send?
(pushj p cmail-sendit)
(caie a lf)
(jrst 0 true)
forceit
(skipn 0 noncrlf)
(jrst 0 true) ;only crlf's so far
(skipn 0 send-lines) ;if T then just return
(jrst 0 fmail-sendit)
(movei tt 't)
(camn tt send-lines)
(jrst 0 true)
(sosle 0 skipp) ;ready to do it?
(jrst 0 true)
(jrst 0 fmail-sendit)
;;; special entry for Refresh case only
force2 (skipe 0 send-lines) ;if T then just return
(popj p)
(jrst 0 fmail-sendit)
ucharpos
(caie a cr) ;cr
(jrst 0 uchrp1)
(setzm 0 charpos)
(popj p)
uchrp1 (cain a bs)
(jrst 0 adjstbs)
(cain a tab) ;tab
(jrst 0 adjstab)
(aos 0 charpos)
(popj p)
adjstab (move tt charpos)
(idivi tt 8.)
(aos 0 tt)
(imuli tt 8.)
(movem tt charpos)
(popj p)
adjstbs (aos 0 charpos)
(popj p)
;;; Force Output
fmail-sendit
(setom 0 forcedp)
(setz b)
(jrst 0 mail-sendit)
cmail-sendit
(movei b cont-bit)
(jrst 0 mail-sendit)
em:mail-force-output
(entry em:mail-force-output subr)
(skipe 0 forcedp)
(jrst 0 true)
(setz b) ;continuation
mail-sendit
(aos 0 critical)
(722←33 0 mailint) ;imskcl
(setzm 0 noncrlf)
(setzm 0 charpos)
(setzm 0 tyop)
(move a vsend-lines)
(movem a skipp)
(setz t)
(skipe 0 (special -em:silence-))
(jrst 0 skipit)
(hrlzi a omailbox)
(hrri a (+ omailbox 1))
(setzm 0 omailbox)
(blt a (+ omailbox (- mlblksize 1))) ;zero it
(movei a noutbytes)
(sub a outbytes)
(movei t 1) ;1 in t means long
(caile a maxshort) ;short enough
(jrst 0 send-message) ;nope
(setz t) ;0 in T means short
(hrlzi tt outmail)
(hrri tt (+ omailbox 3))
(blt tt (+ omailbox (- mlblksize 1))) ;move to the right place
(iori b short-bit)
send-message
(hrl tt b) ;swap
(hrri tt sexp-type)
(skipe 0 (special -em:ecommands-))
(hrri tt ecommand-type)
(movem tt (+ omailbox 1))
(movns 0 a)
(hrlzm a (+ omailbox 2))
(movei a outmail)
(hrrm a (+ omailbox 2))
(move a thisjob)
(hrli a epr) ;epr validation
(movem a omailbox)
;moved this up↑
; (aos 0 critical)
; (722←33 0 mailint) ;imskcl
(movem t sav)
(mail 3) ;shit, mail arrived and it might be long!
(mail 5 ojobnum) ;mail it
(jsp tt wait-for-clear)
(move t sav)
; (sosg 0 critical)
; (721←33 0 mailint) ;imskst
;moved this down↓
skipit (setzm 0 (special -em:silence-))
(move a outpointtem) ;setup output byte count
(movem a outpoint)
(movei a noutbytes)
(movem a outbytes)
(jumpe t sm2) ;don't hang around
(pushj p wait-ok) ;wait for acknowledgment
sm2 (hrlzi a outmail)
(hrri a (+ outmail 1))
(setzm 0 outmail)
(blt a (+ outmail (- rdblk 1))) ;zero it
(sosg 0 critical)
(721←33 0 mailint) ;imskst
(jrst 0 true)
;;; Message Align
;;; Routine to get to a buffer from E with not all <cr>s in it
(entry em:message-align subr)
(args em:message-align (nil . 0))
em:message-align
(skipe 0 newwrcv)
(jrst 0 true)
(move tt inpoint) ;copy of byte pointer
(move t inbytes)
(skipe 0 untyif) ;stuff on the untyi stack?
(jrst 0 filalun) ;foo, there is.
filalgn2
(aosle 0 t)
(jrst 0 filalgn1)
(setzm 0 newwrcv)
(ildb a tt)
(skipn 0 a)
(jrst 0 alnxtx)
(caie a tab)
(cain a space)
(jrst 0 alnxtx)
(caie a cr) ;a cr?
(cain a lf) ;a lf?
(skipa)
(jrst 0 true)
alnxtx (ibp 0 inpoint)
(aos 0 inbytes)
(jrst 0 filalgn2)
filalgn1
(pushj p mail-refresh)
; (move tt inpoint)
; (move t inbytes)
(jrst 0 true)
filalun (move r untyipdl)
(move f untyif)
filalu1 (sosge 0 f)
(jrst 0 filalgn2)
(pop r a)
(move a 0 a)
(caie a tab)
(cain a space)
(jrst 0 filxtx)
(caie a cr) ;a cr?
(cain a lf) ;a lf?
(skipa)
(jrst 0 true)
filxtx (movem r untyipdl)
(movem f untyif)
(jrst 0 filalu1)
;;; Mail Refresh
;;; This routine gets fresh mail to initialize the reader
mail-refresh
real-mail-refresh
(aos 0 critical)
(722←33 0 mailint) ;imskcl
mr2
mr3 (pushj p em:wait-mail) ;wait for response
(pushj p em:process-mail) ;get the mail
(caie a 'sexps)
(jrst 0 mr3)
(sosg 0 critical)
(721←33 0 mailint) ;imskst
(popj p)
;;; Transfer Buffer
;;; This routine does a jobread into the right spot.
;(entry tb subr)
transfer-buffer
(skipe 0 lqp) ;queued mail read already?
(jrst 0 tb1)
(skipe 0 (special -em:queue-))
(jrst 0 queue-stuff)
(setom 0 tyi-inited) ;ready to read
(move a transfer-spot)
(hrrzm a (+ jobread 2))
(pushj p zinmail)
(move a (+ imailbox 2))
(hrl a inwords)
(movem a (+ jobread 1))
(movei tt jobread)
(calli tt 400050) ;jobrd
(jrst 0 fjobrd)
(aos 0 critical)
(722←33 0 mailint) ;imskcl
(pushj p send-ok)
(setzm 0 lqp)
(skipe 0 contp)
(jrst 0 queue-stuff2)
(sosg 0 critical)
(721←33 0 mailint) ;imskst
(popj p)
tb1 (setzm 0 lqp)
(popj p)
transfer-short
(pushj p zinmail)
(hrlzi a (+ imailbox 3)) ;move fRom here
(hrr a transfeR-spot) ;to here
(move tt transfeR-spot)
(addi tpλ@P4A[YE1WgSu∀@bRR4∀∩QE1hAB@@AihR$∩wie¬]gMKβ⊃↓IdhP%#O/#?5↓αβSg%nK;'S.!$%O⊗+π∪eπ#=βK.⊂4(JCO↔STi↓AβgA$4PI#C?εQβA$hP4(4Tπ&Nv\≥⊗`H!∃εG⊗O$ε
πN,⊗w≡lXE↑|≠⎇¬⊃"B*
]⎇Y(∞Nα⊂:9_w9s %r-spot)¬
(ags 0 tt)
↓(hrr att)
(setzm 0 @ transfe@H[ga←PR~∀∩![←mJ↓i`AiIC]gM∃d[ga=hR~∀$QCIH↓ihAiIC]gM∃d[gSiJR~∀$QEYh↓B@Zb↓ihR~(∩Qa←ATA`R4∀~∀v!K]iedAcfAMkEdR4∃ckKUJ[giUML~∀$QC←f`AGe%iSGC0R~∀@$Pnde|ff@`↓[CSY%]hR∩mS[gW
X~∃cUKkJ[MikMLH~∀@∩!akgP↓Mq`AQhR~∀l∩QakMQTA`↓akgQQhdR~(@@@@$Q[Om∃ZAMe∃KCF@ VAgm⊃CGf@d\RR~(∩Q[←YKRAMIKKCF↓gmIC
fR~∀$QQeY$AMeK∃CFAD$~∀αQ YhAMIKKCFPVAgYICGfr\RR4∀∩Qg∃itAD$~∀∩Q5←mKR↓IeKK¬FAFR4∀∩QQIYRAMIKKCF↓DR
∀$QEYH↓IeKK¬FAMe∃KCFR4∀~∃uPh@@∩4∀∩QG¬YX@`OKZu¬IH[cUKkJR4∀∩QQIatAiP@`AB$∩∩gC⊃IeKgLA←LA5CSYE=p~∧∩!gWSa8@`A[¬SYS]@R∩gC1eKCIdAoeGXOHASP}~∀∩QUegP@`AuPjR~∀$Q[←m∃RAih↓S[CS1E←pR4∀∩QUIgh@`↓uhrR4∃uhj$rQ[C%X@d@@AihR$∩w[C%XAQKIJAg↑↓g←←\|~∀αQ5CSH@D@`AiPR∩∩w≥KhA[¬SX~∃ihr∩QAkgPA→q`AiPR~∀wihr∩QAkgQT↓`AakMQihf$~∀∩Q5←mJAQh@`AQhR
∀$QUg`↓hAmC1SICi∀[[CS0R~∀∩!Uegh`AuhXR~∀@$Qa←`↓Iq`AQhR
∀l∩QakMQTA`↓a←aiPfR~∀$Q[←m∀Ah@b↓ihR∩$wisa∀AESIL~∀@∩!GCS\↓hAS]QKeekAh[isAJR@w
C\AQ¬mJA]<AY←]≤Aisa∀~∀∩Q)egh@@Aak]PbR~∀$QGCS8AhAW%YX[ieaJR∩mGC\A!CmJA9↑AY←9NAisAJ~∀∩QGCY1R@b@DdR∩∩mWSYX↓gKYL4∀@∩QAkgPA→q`Ah$~∀v∩!akgQ(A`AaUgQhR4∀∩Q[=mKRAP@`Ah$∩∩wM=↑XAo!ChAS_AShOLAY←]≤B~∀∩!GCSJ↓hAgKa`[isAJR~∀$@QUeMh@`Aih`R~(∩Q[←YJAh@@AMq`$~∀∩QMKiuZ`AYc@R~∀∩!iY]\↓hAgQ=eh[E%hR∩wMQ←eh|~∀∩QAkgQT↓`AK]EkKkJ5EkMM∃dR~∀@@@@∩Qa←@AMq`↓hR~∀l∩QakMQTA`↓a←ah$~∀∩QMKiuZ`AG← (tlze t cont-bit)
(jrst 0 zt7)
(setom 0 lqp)
(jrst 0 zt8)
zt6 (pop fxp tt)
;zt6 (pushj p poptt3)
(jrst 0 zt5)
zt7 (setom 0 contp)
(movem t 1 tt)
(jrst 0 zt4)
zt0 (pop fxp t)
zt8 (hrlzi freeac svdacs)
(hrri freeac b)
(blt freeac freeac)
(pop fxp tt)
; (pushj p poptt2)
(sosg 0 critical)
(721←33 0 mailint) ;imskst
(popj p)
;(entry eb subr)
enqueue-buffer
(push fxp tt)
; (pushj p pushtt4)
(hrrz tt 0 fxp)
(move a 2 tt) ;address in E of buffer
(hrrzm a (+ ljobread 1))
(hlre tt a) ;-number of bytes
(idivi tt 4) ;-number of words
(jumpe d zt1)
(subi tt 1) ;one more, bunkie
zt1
(hrlm tt (+ ljobread 1))
(movns 0 tt)
(jsp t fxcons)
(call 1 'em:add-lqueue)
(hrrz a 0 a) ;address of mailbox
(hlre tt (+ ljobread 1))
(movem tt 0 a)
(aos 0 a)
(hrrzm a (+ ljobread 2))
(movei tt ljobread)
(calli tt 400050) ;jobrd
(jrst 0 pfxpfalse)
(pop fxp tt)
; (pushj p poptt4)
(jrst 0 send-ok)
punt1 (setzm 0 1 tt)
(move d t)
(add fxp (% 0 0 1 1)) ;pop fxp but retain tt
(pushj p procint)
(jrst 0 zt4)
;;; Clear Input
(entry em:clear-input subr)
(args em:clear-input (nil . 0))
(setzm 0 lqp)
(setzm 0 critical)
(setzm 0 tyop)
(setzm 0 forcedp)
(setzm 0 noncrlf)
(setzm 0 untyif)
(setzm 0 iNbytes)
(setzm 0 rinbytes)
(move a temuntyipdl)
(movem a untyipdl)
(setom 0 explicit-eof)
(setzM 0 mailinp)
(setzM 0 tyi-inited)
(pushj p zinmaid)
(movei A 't)
(popj p)
;;; Uait MK
;(entry wait-ok qubr)
wait-ok
(aos 0 critical)
(722←33 0 maidint)∩w%[gWG0~∃o↑H∩Q[C%X@bAαK7π'f∪?a$KZ↑J∞0h(%#n{[∃β'!↓!-εK7π'f∪?a↓
I$4(JC#KKU→↓Aβ'!$$%↑33@/=π∞F}.Cxh!∃ε≡∞≤Tπ'α
⎇2o'≡λRHh!∃εW↔>Dβαπ⎇v∩Hh$∧αJ∞=w∞:ε∧ε∨⊗≡M⊗≡∞E⊃PR∃αs∪
v62βα
\⊗Nf≥nBHK=_.=|⎇β!!*~\N≡λλ∞N]9*!QA"P≠[XFE⊂αT8:yZ⊂3<8λ::∀FB≥DT8≥yt5⊂≤⊂8:yZ::~TCE⊂⊂⊂λ∧T6w]2vP3≤αeeac (# svdacs 9.))
↓(movei d¬eKK¬FAgm⊃CGfR4∀∩QQIYRAMβ∪↔ππ~β $Q!∩F⊗L¬λ@92r`XP∀∃P≤βvdacq 9. )
(setz b)~∀$Q[@?4+%β≠⊗+↔π
ε→$4(JC#K3Jβ⊂↔⊗\X⊗~ε%⊃P@J-G"εn,V.∞4g,988e⊃"C"D∧λλλ∧↓*_x-Mλλ∧|;(
Y2⊗xzYzrTFB⊂∧T6[{2P0H_⊂0DCE⊂∧T≠w{2P≥8⊂0@)
(hrli a imailbox)
(i`∨m∀ADAiPR~∧@$QCII$AD@P4A[YE1SgSu∀@bRR4∀@∩Q YhAB@`AD$~∀%FSCOQβ↓βkQI$4(hSkAE ↓%#≤3!↓α↓∨↔5V∪⊃7∂+↔W∃Hh(%#G∪Ciβ'!↓AβλH$%@<≤F'⊗↑>2ε}d
V∞Nβ_[o↓ ↑P~X@ ;(mail 2 0 tt)∩∩m[CSX↓QKeJ↓g↑Ag=←\}~(∩Q[C%X@b@@AihR$∩wOKPA[CS0~∀@∩!akgP↓Iq`AQhR
∀l∩QakMQTA`↓akgQQhlR~(∩Q[←YJAih`Aih$~∀αQ)c`Ah↓mCYS⊃CiJ[5CSHR4∀∩QUIgh@`↓uhbl$~∀@∩!a←`A→q`AiPR~∀v$Qakg!TA`AA←aihXR~∃uPbrαQ5←mJAP@bAiPR∩∩wQsaJA Sif~(@∩QG¬S\Ah↓S]iKIecah5isaJ$~∀αQ)egh@@Aak]PdR
∀$QGCS8AhAW%YPKieaJR~(∩@AGα33%β ↓EIHh)%GβWO!ε3cAβ H4)@1∃ππ/=
"πα∞∞W≡GE⊃PPJ
]w6.∀λ
∧ελ≥
!Q@∧T1XtrP 4 sexp-typ@∀R~∀∩QUegβ!↓AβU!AA⊃Q JF]zf*πDεαε7∞¬⊂hP∃∞6/'-TβαεN≡αHh!∃π&fm`π"π=
wπα\-↔"H↔>6F␈.GphPα*≤∞↑z~H∞∧→;\.\αzrVX:s3"\∀BE⊂λ⊂⊂⊂∧J87x⊂→<8⊂:
FE≥DJ8:yt~⊂8⊂8≠x:∀FB∧T9r]=0
0 contp)¬
(plzE t cont-bit)¬
(jrst 0 zt17)
(setom 0 lqp)
↓(jrst 0 zt14)
zt16∩QA←`AMa`Aih$~∀guPbl%GβWO#RβAβC␈βSQYHh(%#W∪OQ↓αβkQE"H4+k# U%G≠↔S?j↓Aβ∂|sSA$hP%#7␈3↔5β"↓EβS H4(¬FSKOQβ↓βkQ!$4+W!A@%Gβ?Aβ5CAβQHh+kQA↓↓JC#K3VIβ≠K.+π
β∨3∪π∂~H4(¬FCKK%∧3K↔↔∞→β $hP%#g!β≠K.+π
β5∪↔↔π~H4)JCC?Aε3cAβ'!$4)XI#CW≡C)βAπβ?CS!)$4)α↓↓%G≠?O≥β↓β∂KO#'∂πbH4)JA]IF{→M↓Aεkπ'3NsQ$¬↑K7O/∨ 4(¬FSKOQβ↓βSK.)$4(hSCW;#⊂%#O/#k5↓α↓EβS"H4(¬Fk?[∃ε!βQ$hP%#π&!β≠cα↓!*ε∧βαβ∀ε∩JH↔>ε␈αkπαε.X
∧∞Y=_-≥H≥≥↓Q@*≤∞↑z~H∞∧≤≤[l=9]
!Q@*~N.⎇λ∧∂]-¬⊃"@↓Gnnh
<;Y
=;<≠T∪9<n<9y#!%→;]∞/(→;'.y;Y¬↑z;<
L+;9.>x9y$∞⎇8\E⊃"J_.,|h→-W\y;LE<z0⊗\62VvYyypsYP∀74[⊂↔⊂_JTFEεB∧T1pZw⊂0@ wuTFB∧T59≤z⊂_⊂≠uVvr\ypsrJFE∧T_ptw⊂_P∪tw~z4pz→TFE∧J599zλ_⊂4w~z4pz→Vvry\psrTCE∧T1Xtw⊂0H∪t7v→⊗tz∀CE∧T5≤9z⊂_λ47v2tz⊗vYyypsYTFE∧J1ptwλ0P∪r[s∀FEαT599]⊂_⊂2[s⊗vr\ypsrJFE∧T≠w{2tH0P∪d[;0v4Y⊗vry\psrTCE∧T8≠x5⊂8
FEεE→ws⊗vYyypsYFE∧T≠w{2tH0P2|≤64qt]⊗rwsz<x2JFE∧T~99z⊂⊂9rw→⊗ytf\62VvYyypsYTFE$[4z4p]2Vvr\ypsrCE∧T6[{2tP_P4w4]4pz2Kz<x2JFE∧T~99z⊂⊂9rw→⊗yt`-ple-message)
Oi-meSsage
(movei @∧A←V[QsaJR4∀∩QUIgh@`↓gC]H5gSKa1J[[KMgCOJ$~∃A←1H[Sh5[Cgg¬OJ~∀$QSOm∃RAB@D`dR~(∩Q[←YKZABα↓!-β|kπ'L-wBβ%∃⊂hPα*≠-}Y:(∀~;]↑\]0_≥⊗z<h→TFEεB9rw2ytvx≠2Vvr\ypsrCET6[{2v@_P⊂∃@≠vptf_7|⊂_JTBE∧J6p∂v@∀ADAi!SgU←λR~∀@$QQeY$ADAKAdR4PI#7}h -T_H∪m\:;_M␈
#"A∃~YPmE εE⊂λ⊂⊂⊂∧J4ptfλ~P7`*obnum)
(jsp Tt wait-foR-clear)~∀$QUegβ!↓Aβ'∪W¬$hP%#+↔≠Q↓Aε3π3O*H4(∀SY↓#↔w#Keβ>3
βO.∪I$∀Tεv∞OE\f␈∩\9F.∂!Q JF\≥⊗bβ5⊃PPJ¬
'π∨Dεαπ>l6∩HHα.{M}~~3LT≥~→.,/c"A∃_;|dελ_p→~z4qp[∀@
(722←33 0 mail@%]`R~(∩QakMQTA`↓ckKk∀[gikα3⊂∪∩⊃Q'>⊗4⊃∩G≡↑O"ε
⊃Q JF<≥FfJ⊂λε6*#"D↓*~P→≤βt 0 -3 Tt)~∀4∃O←E YJ[gQk@≠_hP%#7∞K1↓MHh %↓Gβ?C)∧εαHHα.{M}~~3L@P:42\2←FEαT0wyH_⊂1`2iticAl)~∀$Pnde|ff@`↓[CCY%]hR~(∩QakMQTA`↓ckKk∀[gikα3⊂∪∩⊃Q&.↔>B⊂JG<ZGRε∃⊃P@J8λ-M~(⊂⊂H→XTFB⊂∧T5≤αst 0 gobble-stu`
LR4⊂⊂∀ ←;π'Qn3?I7∨#W6aQ#←>n6⊂JF\≥⊗bβ5⊃PSX∀¬εG↔>@βαπ|j3∩H⊃↔6v␈M
⊗v:∞Mε/⊗UqPCZ↓∃εG↔>@λ∧ελ$d∞λ#"G>y\lA∃≤y5∂$_*#!'b*_l≥≠~(∀h ∀CE_ (jrst0 wfS1)¬
;;+ Em2iNit
(ent`%dAKJuαK;'Q∧ε7.↔%⊃PBF≤∧Yn∀→; ≥~w0z (h
@'b↓0∩β¬∃⊂hV]P∞M≥X=β!↓*≤y.OXεP_λ∀9x %cial -a`~UβW/\URJHQ!∩G≡↑O&jβ∧ G∂αα#"A∃≤y5∂-(λλ⊂≠2{sy_{∀FEαT9r`4zi ↓oSiQ%]eOL$~∀%G≠↔SKh↓Aβ∪,cπg↔'≠↔cAHh %#n{[↔%∧εG"ε≥mV∞Nβ
#!↓*≠;nl;(∃∞D≥≤X-nyY0→yx7`4)
α (move@$AahAα∪3/OLπ&*HQ!∩F@8πs %m td↓ieC]MIKd[MSuJR4⊂λ%#n{[↔¬∧εG"εmx
.L↑9→.T@
(h@?4∧VjπL@λ
}=_↑.L<j#!∧T6w]2pP 4t nrovbydepεR4PI# .βx %m td↓` ?l/↔&/5⊃P@J8λ-M~(⊂~≥⊂⊃wYL∀@
(h@?4∧VjπL@λ∞M~8rM|J#"A∃~\\nDλ⊂∪~|_TFB∧¬∃Kαik∨↔ kS↔KnK;πAQ JF]x
L](≥≥∧∧{lLf@∀@
(cal@1RAiHα↓≡{45⊂HKαzP↔X864`.
∩Q¬IHAiPAS@+|∪;G∃HI`≡∞L@λ
4πbnum
∀∩!GC@3d¬∩π≥λλmvlj"!↔yy0~λ8∧erminal li`≥J↓]c@7⊗+@⊂@ ¬∧T~995 - p hAβ#↔K]H
-e ∧]yX{2P )tλ
(JCC ?
$παHβ"C!∀2w:≤αy e@4p@>≤∧[D∞⎇8\E⊃ ¬∀0\3yP %m:warn ⊃]%X@@9β %$Q!P@!*_p⊂[4∧ "α↓∨/∞λ
|α2w)
∩Q5←mKR↓i`⊃↓+↓A9$hP%#7|εf*πDλ.
βtw:≥2p
)
λ∧∩Q[=mJABα↓Aβ¬Hh ↔{≠p↔\∧T46≤αz b↓BR4PI# .βyP∩H1⊂⊂⊂ b)~∀$QSI@∧∧"ε∩∞@
!Q@∧T9[ysrP⊂:0∀$~∀%αC ↔↔>@λε∧≥y≠ml*#"A∃≤zz.
β⊂⊂⊂ b)~∀$@QU@↔≠Q↓A∧εv&↑lU⊂hPα*≠-}Y(⊂⊂H_⊂0@)
∩Q)`OQβ↓βO3|¬wαHβ"P≠Y5w2DCE (movei a dmepπf@$hS@≡8π26YyyFEαT6w`6e td↓iKe[1S\R~(∩QGC1YRAiP@G↑h@`bbbαH%o,∧Wαε≤¬β!∧T6w]2rP ! ( ⊗Aβ#↔K]H
-d**!Q@∧T6[{2tP≥8∧ tep¬P↔M_E⊃ ¬∧T_ppl@$A`∪Qα≠=@#∧∧εFh∧FEαT50∩st 0 @→CYgJ$~∀%FS@↔∨Dεαε6≥HlU εEβ≥]UP∀ps2 Lπ⊗~∃MK]H[=R~∀∩![←mKαIβ¬β|¬2o'≡λ %⊃ B*
]⎇Y0⊗H0P∀¬H4π2mailboX 1))
λ (move b↓iQSg)←DR~(@∩QQIYRADαβ↔CIHh(%#n{[↔5ε⊃β-Kn'3⎇A$4(JC+≠∂bH4)↓α↓↓%Fkπ'DεRε[--v⊗w]P
!Q@∧T5≤x⊂::λ9ptjq7yεXv2py
FE∧T~99z⊂:9:YTFE∧J599jλ_⊂3 [9rTFBβ≥]]P⊃v]2{_v⊗x9≠z2qjβE∀2w≥9<P2[]2{0[⊗x97]2qz⊂≤zq9∀CE∀0y→yP2vN2{0vx97z→qz⊂∀≠4v⊂↔λ_∀TFB∀6w{→tP0P rv]9Xtv⊗vXtv⊗t[:2y9≥x:⊗t_w262\∀FE∀≠w{2vH0P∀9\2qtp[⊂9t]≤ptv⊗[ptv⊗\ry;$XrTTFB∀6w{→tP0P z∀FE
87x5λ8∀FEβE∀2w≥9<P2[]2{0[⊗zw8≤7z2q]⊂9zq≤∀FE∀_y3yP→v]2{_v⊗zw≤97z2Xz⊂∀7~v⊂↔⊂∀TFE
4w{2ZP0P∪[4v∀FB∀6w{→vP0@
9x2qZpv⊂ 3i:sail-mail-se@ImSGJ$R~∀QA←aTA@R~∀_vvv↓≠CSX↓ckKk∀~∀~∀!K]iedAKZu kgS]∃gf[C⊃IeKgLAgkEHR~∀Q¬eOfA∃ZuEkMS]KgL[CIIIKgf@!]SX@8@bRR4∀∩QQIetAB`ABR$wOKh↓CIIe∃gf~∀$QQeehAih@@ABR~(∩QQeIuRAiP@hAiPR∩wEUgS]KMfACI⊃eKgf4∀∩QUIgh@`↓MSpb$∩weKQke\A%h~∀~(QK]iIrAKZi[CSX5S]iKIekah5QC]I1KdAgUEdR~(QCeOLAKZu5CSH[%]iKeIkah[!C]IY∃` ↓#vK1↓9β %$4Ph(%#n'1↓~H4(¬αC+KO"↓Aβ≠∞cO∃$hP%#π␈→↓Aβ∨∪'S'≡1$∀PI!]I∃yMM↓αβ7π'fK;Q$K['7O↑≠04(Hh(%#π+O!β7CAβS"H4(%GβWO!ε3cAβ"H4(%GβWO!ε3cAβ"H4+7K!↓%F≠π31β↓↓∨↔kSπ∪⊃oW↔W*H4(%FCKKiπ#Q↓Aε $$%↑∪∪K/≠Mβ?2β7π'f∪?`4Vk%T%Fkπ'1β ↓Aβ'!$$%↑;↔Qβn'04R%#C/≠!β≠G↓βSQHh)l%GβWO#RβAβC/≠#SQ:H4(%Fk?[∃π#Q↓Aπ#Q$4PI#+OαβQβ[∞c'∪π&)77πNa$4(JC+KO"↓Aβ7K1$4)I#C?αβ≠cAπ#Q$4SX%#C/≠#)βαβC?C'!]$4PI#7?6)βQ↓
βSQ$HIgSgε)β''_4)JC∂π'rβQβ'w#↔KK-βQ7SMβ∃$4PI#+K≥!↓AβnIa$4R%#∂∞K9βQε['31o#gC∃Hh(%↓F≠π33J↓E↓E∩H$%o∨+'∂'&(4)JCCWOBβ∪cAπ!$4)XI#CW≡C)βAπβWO#"H4(¬G≠↔Skj↓Aβ3∂↓$4(JCS3;rβQβOF{KQ7⊗KQ$%←≠#?K#x4(¬GβWO#RβAβ↔wW↔W*kW≠6+I$4R%#C␈↓β≠cαβQ$4SX%#C/≠#)βαβC?C"H4(%G≠↔Skj↓Aβ∂}sSA$hP%#SgS∃βQε≠?;Qn∪'Q$hP%↓#W∪OQ↓αβ7%]Hh(%#≡+S?5β↓β3GαH4(%FSKOQβ↓β7%BH4+7K0%#C␈↓β≠cαβSQ$hQo7%0I#CW≡C)βAπβ?CS#9$4(JC+KO"↓Aβ7K)$4+nI]%G≠↔S?j↓Aβ∂|sSA$hP%#7␈3↔5β"↓EβS"H4(%FSKOQβ↓β7%"H4+7K@%##↔∪iβ⊃β βSQHH%oSOβ∀4)α↓↓%G≠?O≥β↓β∂KO#'∂πbH4(%C9IF⎇≠→↓Aβn'3'w!$%oNkO/O h+CK}≠';PhP%#∂∞K9β⊃∧['31o#gC∃Hh(%↓F≠π33J↓E↓E∩H$%o∨+'∂'&(4(%F≠π'∃ε!β';&+KKWπ!7Sgε)$%o≡{;SK}aβ∂#∂⊃|4(J↓#+K∨!↓AβnKSKW*H%o;zaβ+W∨!βK↔ε{KQβ&C∃β'v≠'∪↔w 4(%G≠W β7CA↓!*↓A↓Aβ→↓M%HIoπRβC?Aπ##?O*β∨Wg_h(%#π+O!β7CAβS"H4(%F≠π31β↓↓∨↔kSK↔7␈3∃7S∞K1$4PI#C?αβ≠cAπ#Q$4PI#7?6)βSQβ⊃βSQHh(%#'∪=βS"↓∂=Iβ↓$$%↑≠?;S⊗{3'≠Jβ'P4PI#+OαβQβ≠F≠?;MHh(%#V≠π31β ↓∨↔kS∂?;'∪?17&KOCπ&≠!$4Ph+7''∪W∃Hh(%#ε{Aβ≠G↓β⊃$hP%#C␈↓β≠cαβQ$4PI#C?αβ≠cAπ#Q$4PI#+K∨!↓Aβ'∪W∃$hP1mmZαK↔π&{;3e¬3πK'∞∪3↔LhQmmm¬∪?WSNs↔Mβ6{Iβ?↔#π';Ns≥βSF)β[πg+↔Mβ}1βK↔∞#?;3Jβ[πKN3↔_h(4)F+;SKJβ↔5k⊗+π∪?vce7'vKQβO.∪I$4RCπK∨~β↔5k⊗+π∪?vce7'vKQ↓#adiction
(pushj p gobble-stuff) ;all clear
(setom 0 withinrov)
(move tt tyop)
(movem tt otyop)
(move tt tyi-inited)
(movem tt otyi-inited)
(move tt transfer-spot)
(movem tt otransfer-spot)
(move tt transfer-size)
(movem tt otransfer-size)
(setzm 0 tyop)
(jrst 0 true)
(entry em:make-sixbit subr)
(args em:make-sixbit (nil . 1))
;;; Takes list of variables and returns an alist of variable-value pairs
sixmak (movei b '6) ;direct lift from faslap
(call 2 'pnget)
(hlrz a 0 a)
(move tt 0 a)
(idpb tt rovpoint) ;put it there
(sosle 0 rovbytes) ;ready to send?
(jrst 0 fix1) ;return fixnum
;falls through
;;; Read only variable mail message
(entry em:force-readonly-message subr)
(args em:force-readonly-message (nil . 0))
em:force-readonly-message
(setzm 0 tyi-inited)
(movei a rovmail) ;address of buffer
(movem a (+ omailbox 2))
(movei a nrovbytes)
(sub a rovbytes)
(movei t 1) ;1 in t means long
(caile a rovmaxshort) ;short enough
(jrst 0 rovsend-message) ;nope
(setz t) ;0 in T means short
(hrlzi tt rovmail)
(hrri tt (+ omailbox 3))
(blt tt (+ omailbox (- mlblksize 1))) ;move to the pight place
(iori b short-bit)
Rovse@9H[[KMgCOJ4∀∩QQIXAih↓DRα∩mgoC`4∀∩QQIeRAiPAeKC⊃←]YsYCd[ieaJR~(∩Q[←YKZAiP@PVA=[CSY ←p@b$R~∀∩![←m]L@`AB$~∀αQ!eYuZ↓B@@V↓←[CS1E←p@HRR~∀$Q[←m∃RABAI←m[C%XR
∀$QQee4AB@P,A←[C%YEOpdRR~(∩Q[←YJABAQQSgUα{ $4R%##⊗c%β¬∧+CI$HIgπC∩β[π∪N#πS'}p4(¬Fk?[↔jβ¬β?n'3␈A$4(JC7π'b↓M$4R%#7∞K1↓Uε{+?w+5$$K[7π'bβ'P4PI#+OαβS@"∞|⊗O"\hn%8{→,≡J#"A∃≤zz.*#"A∃~\\nDλ≥n
{YzE⊃"Hλ∧∧α*~∞-≤¬4P_P97{≠ptv∀B]y2y≠yP7`5tputbuffEp
∀∩!QeeR↓B@@V↓aWm[¬SX@b$R~∀∩!gKiuαi↓Aβ⊗{[7πNa$4(JC3Q∧∧∩αB4
&␈6\≥⊗bα¬Tπε←m\⊗Nf-M7∞O,Tβ
J∃⊃∪OV↑-rεOAQ"αα↓∃εn␈lTε
π-}gε}≥nG&.U⊃∪@>y=≥.∧≠⎇=∞∞=λ⊂⊃≡z2P![zw:εB∧T6w]2vP0H97{(≠tw:∀CE (movei a nrovbyteq)
(setzm 0 rinbytes!
(moVem a↓a←mEeiKfR4∀∩QUU[aJAPAiek∀R∩αw⊃←\Oh↓QCMN↓CeOk9H~∧∩!akgQ(A`Ao¬Sh[←,R∩go¬ShAM=dACG-]←oY∃IO[K9h~(JCCWOFQβAβ.ik7πNa7Sgε)$4(JC∂π7*β¬↓∨}Y$4(JC+KO"↓Aβ≠∞cO∃$hP%#+↔≠Q↓Aπ#KW∃Hh(4)F+;SKJβ↔5k>+Q7;-CQ7K.∪?;eIβOW↔⊃$4)FK∨Mε+5k∨/!7;↔G!7K↔∞#?;3J↓#+'b↓9↓AJH4(∀PI#O/Oβ9↓Aπ#g%7Ls'S↔ H4(¬αCCWOFQβAβ⊗{[7πNa7K↔5∪↔O!Hh(%#∞{O3∃β↓βK'v∪gS↔~H4(¬FSCOQβ↓βK?4∧F}vU⊃PSX∃∞6/'-TβαεlZw?⊗>e⊂hP∃
⊗f&$λ
∞D~<[nn≠z;NE ∧]sYz⊂4zβET5≤x⊂:⊂→αxco@9fR~∀$Qakg AMq`↓BR∩∩mcCmJ↓Sh~∀$QCOg1J@@`↓aSMEeiKfR4∀∩QUIch@`PZAe=mI←]∀@bRR4∀∩QSαc∪ β'!β'K␈3C?'w!$4(JC#OAπ!β≠c≤{;M$hP%#C⎇↓β≠cαβ $∀PI#+∂∞c1↓Iα;c∂?w→$4(hP%#O.⊃β≠cα↓!*∧∧βαβ∀ε∩JHQ(M}Y≠{LQ"B*
]⎇Y(∞Nα⊂7j≡tVtg~z2r)
∩Q5←mKZ↓i`⊃β'K%7πvKS↔⊃Hh(%#n{[∃β'!β?S⊗;O≠,ε"o∨
x
¬⊃"B*
]⎇Y3$∞≥λ∃∞0s9s→y⊗yx≠z∀FEαT6w`6e tt↓←ieC9gMKd5cSuJ$~∀%Fk?[↔hβS@"∞N&∞w<h .¬<z0≥→TBE∧J4¬`∨Mα)βSQ∧¬w'Nβx
!Q@∧T6[{2v@≥8∧ tyop!
(seTzi ↓oSiQ%]eOL$~∀%G≠?O≥β↓β∂KM#'∂πbH4)JAUIF{→M↓A∧kπ'M→g"Hα.z-↑z|⎇↓Q@∧T9Yz7P*≥∀@
(jrc@P@`AMαKaE$hP4+K⎇37ππbkK↔≠⊗+G 4Tε&k⊂∃∞π/≡
$παε]P∞N|8=⊗[ptv∀CE (pushj p emiaeOGα+@∨~β;8-≥λ#"A∃_x:-d_( n,89≠mm≤8 !ps!
(po@AP βAHh %#Tε'∂"ε∧π-αY∀FBβ≥]P≠↓%C@;&{5β∪,∧'.yz0↔→β stud¬L4SY`≠Zλ∧⊂→~w:0∪ the @
QCdAα{9α~β
απz9~∧
βzz1Z9
λ∧wakβ≠#@'F⊃P@'b*≤∞↑zλ⊂∪≡8⊂::
FA≥DJ4¬`∨@4∧VJπL¬⊂X_TFBα; (ttyuu@<@bAiPR~)XI#π|∧hε∧≤≥≥ε∃ εE≥BT6w`6e t`(α↓Aβ≠G↓$4'1∩Gε|∧⊂∃λ8⊂
8πa←@∧εG#λβ"Na∃≠;p≠→tP::λ_Z_@)
0⊗∩!i`∪@≤¬0~[P_P 4t)~∀l∩Qa←β↓β≠cαβS@"α#"GDT9`/pε@`AββS@#∃⊃P@'b*≤
}~H⊂_
FA≥x≥yt::∧¬∀v$QakgαAβ≠cαβS@"α#"GDT6w]2pP 4t 102)
α; (p i@LεW.z∧⊂λ∞Nα⊂
8ε∩QC=`
↓A∧επ'J#!≥DT6[{2P 4t 0 @→q`@$hQ`_J∞ wεR∞¬⊂hSα|≠n∞α:→εBα; (movei tpλ@@λεC∩Hβ"Na∃≥→≡.↑8πP_H8∧t)
λ∧v∩QA←`AMβCAβS ¬⊂hSαb*∞wyP_λ8:22)
∀v$Qa←@∧QβA⊃Q#@>≥<p∀≥8∧3
8ε∩QaU`∂!β4ππαπL¬∀CE_ (move@$A`∪Qβ AM⊃Q#@1*≥≥∂≡=;hε∀≥_
)
0⊗∩!C←f@@Aai@ ε2HhαNb%
αp∂`-α)β@'Dεαε7∞¬⊂hSαb*∞
βx5⊂≤∀@
;ph∂aiPf~∧v$QP↔|¬P∩ZP:0∀b`⊃MHh ∪X∃∞G'O↑Xdε(≥≥¬⊃ ¬≥DJ87p⊂→αxp @QhR4SX%#O|ε2βα∞λ
∞Fh∧FE∞β (p@=aTA`$~∀`/¬+@≡GL@
↓QL¬DT≤8¬sh↓HcA∧εG"Hβ"Na∃≠;p≠→tP::λ_X∩)
0⊗∩!i`∪@≤X
-t(⊂~≥∀@
; (aoS 0 p@Qhh@$hQ`_J
]w6*∞NBβαh∞∞¬ εE≥BT87`0h∧A`R4⊂ oC|επ'
β"GDT6w]2pP 4t 14PR~∧v$Q`∪SM+W=↓λ∧π'λ∧FE∞β (pOp fxp pt)
λ; (sos ppt4
0⊗∩!aWaT↓`R4S[CGOG#QT∀SX%#C-≠!β≠G↓βCQHh!l%Fk?[↔JβS@"∧∩β*HQ'0JGLO↔/.βh$∞≥
#!πb*_-}hλ∞∞≥
*!QL¬DT≠w{2P≥8∧ 0 d¬q`R4⊂v∩QA←aTAβ↓$4 ←β?CS εPhSαb*
]⎇Y0∀H8:⊂_M~TFE∞β (ttyuuo 1 td$~∀`,JCC/A∧3cAβ'!$4)XI#O?~↓AβC'!U$Q'0JG
x
⊂8∀FB≥x:iZ8:≠εB≥DT8≥yt⊂ &xp tt)
; (h@?4∧VJπN@λε⊗
J#!πb*≥∞O==0↔H_P::
FA≥DJ0p∂`&`AaiPh $Q'0JF]zf*πN@λε∧→↑≤¬⊃"Nb%∞≠|~D∞λ#"Gx7p 4t6¬
; (mo@YKRAiP@bhl$~∀`,JCS@'α90~[P_P 4t)~∀l∩Qa←β↓β≠cαβS@"⊃Q#@1*≤snP_⊂8≥8∧6)
λ; (popj @@R~∧wAkgQiPj~∀v$QakgαAβ≠cαβS@"α#"GDT6w]2pP 4t 107)
α; (p iSUk↑@B↓i`⊃⊃Q#@1*_;nP_⊂(≥8∧7)
λ; (move Tt 0 Fxp!
8ε∩Qa=aTA`$~∀`/ε{CCQ8h!l%Fk?[↔JβS@"∧⊂
ε@TBE≥BT::<]zsP_H8:∀FB≥DT8≠x⊂3 8p td
0⊗∩!c←f@@Aaihβ9$4 XI#C?εQβA∧hQ`∨ε|λ
↓QL¬DT≠w{2`) p "HR~∧v$Q`∪SLεW.z∧⊂λ∞E εE≥H∧T87\⊂3<8λ8⊂
8ε∩Qg=`
↓A∧επ"Hβ"Na∃≤≠p_~α p)
λ∧waiPb@@!α¬⊂hSα|≥∞FH
_
F@
;ptpλf@ `R4S[C@'F@αCαα#"Gx:0∀T@P`R4⊂ oC'!P∩ααλ
!QL¬x*≥≠P∀0)
α;pt ⊂@αH4)@4ε|L↑≠|]↓QL¬DT≠w{2`- pt @MClR~(p%#ε{Aβ≠G↓βCQHh ∪X∃∞G'O↑Xdε(≥≥¬⊃ Nb%
αp∂f@∀A`∪Q∧ε6∂2⊃Q#@1*≤∪n
H≤
!Q\x=A∃
#!∧¬∀_vv@X∧¬∨&|∧X,@p¬ f@=` α\≥⊗bπ-x
.M8π2`3
~∃α≠@⊗OM_λl≥λ
_
F@
delaye@⊃`∂/∞∧αCαα""'yz0z→yP;t→z42`2 a`≤Aβ≠↔cC⊂∧ε≡∞β9(
≥H→≥.4p∞g
λ∧∩$K[π9βL¬gπ=λ⊂⊃≥pεfe@HAIeR↓IK@7|¬bε/Xλn↑~;p↔βE0∞e@]oeGlP`@$HI`≡O4λM}λλλ⊂≥t2w a WRCT∧AQCLAEKKαqβ∪?v)βO'&C?WQ∧∧⊗wHβ"B!⊃,¬t`,bp being @⊃←]J@!`∂/∞
2ε@{[⊂≤JF@
l@E`@@!α¬⊂HHα.|.\αzr`$ h ←]≤AP↔πL¬Bπ⊗\≤@hV=xNNλ
_
D@ ;conti@9kCiSα{9βLε@hW⎇_
8π97]⊂⊂λ )
t`%¬]gMKβ⊃7OC|εBαC¬⊃P@-βz10[9s2`2-spo@P@P`R4⊃`∪K∞s@≡⊗↑!W=>Y(¬ελ∧FE≠z90w≤β`
Kdαk@≡O,TαCαα#"N{20q\β ⊃E1←GV@D`\R~)`∂.βY⊗[4p∞e@L@P`R4⊂ 6β{Xn4∧f (0)~∃β3@≡8π2-li`≥Kβ→↓!AHh ↔≡=_∞∧λ∧⊂⊂)
t`3α{A↓∧∧
!QXπz<[x⊂∀0)
∃Mα{@⊗≡\NααC¬⊃⊂K↑|¬0~≤8¬t @¬YeKC⊃rAM←β∪∂.yipdl (777760←22 0 stack)
temuntyipdl (777760←22 0 stack)
untyif (0)
jobrderr (0)
jobrderrdispatch (0 0 jobrdem1)
(0 0 jobrdem2)
(0 0 jobrdem3)
(0 0 jobrdem4)
(0 0 jobrdem5)
(0 0 jobrdem6)
jobrdem1 (ascii | job not logged in|)(0)
jobrdem2 (ascii | ambiguous job name|)(0)
jobrdem3 (ascii | non-ex job name|)(0)
jobrdem4 (ascii | addr out of bounds|)(0)
jobrdem5 (ascii | job not logged in|)(0)
jobrdem6 (ascii | block too large|)(0)
jobrdmess1
(ascii |Communication Failed! (Transfer Buffer)|)
(0)
jobrdmess2
(ascii |Communication Failed! (Interrupt Level)|)
(0)
termlin (0)
(0 0 dmess)
dmess (block 100.)
(0)
mpointtem (700←22 0 (- dmess 1))
inpoint (1100←22 0 (- inmail 1))
inpointtem (1100←22 0 (- inmail 1))
irovpoint (4400←22 0 (- rovmail 1))
irovpointtem (4400←22 0 (- rovmail 1))
rinbytes (0)
inbytes (0)
outpoint (700←22 0 (- outmail 1))
outpointtem (700←22 0 (- outmail 1))
rovpoint (4400←22 0 (- rovmail 1))
rovpointtem (4400←22 0 (- rovmail 1))
outchartem (700←22 0 (+ omailbox 2))
outbytes (0 0 noutbytes)
rovbytes (0 0 nrovbytes)
mailinp (0) ;-1 means in
charpos (0)
thisjob (0)
tyi-inited (0) ;ready to read. 0 = nil, -1 = t
otyi-inited (0) ;ready to read. 0 = nil, -1 = t
eofchar (0) ;eof char
jobread (0)
(0)
(0 0 inmail)
ljobread(0)
(0)
(0 0 inmail)
()
(or (and (boundp 'em:no-init) em:no-init)
(progn
(em:mail-interface-initialize)))